﻿using G.Model;
using G.Model.Runtime;
using G.Runtime;
using G.Runtime.Actions;
using GameRuntimeLibrary.Model.Runtime.Actions;

namespace G.Runtime
{
    public abstract class GameElementAction : HasExecute, GameAction
    {
        private readonly GameLocation _Destination;
        private readonly GameElement _Element;

        public GameElementAction(GameElement target, GameLocation destination)
        {
            _Element = target;
            _Destination = destination;
        }

        public GameLocation Destination
        {
            get { return _Destination; }
        }

        public GameElement Attacker
        {
            get { return _Element; }
        }

        public override string ToString()
        {
            return _Destination.ToString() + " " + this.GetType().Name;
        }

        //public abstract void Display(Game pGame);

        public abstract void Execute(GameSpace pGame);
        

    }
}
